package framework.forms;

import org.openqa.selenium.By;

import webdriver.BaseForm;
import webdriver.elements.Button;
import webdriver.elements.ComboBox;
import webdriver.elements.Label;
import webdriver.elements.TextBox;

/** Описывает форму "заглушки логина"
 * иногда на стенде стаят заглушку для логина
 */
public class SimulatorLoginForm extends BaseForm{

	/**Базовый конструктор.
	 */
	protected SimulatorLoginForm() {
		super(By.xpath("//label[contains(.,'Новый пользователь')]"), "Симулятор логина");
	}

	private static Label newUserLbl = new Label(By.xpath("//label[contains(.,'Новый пользователь')]"), "Новый пользователь"); // радио-баттон создания нового пользователя

	/** Проверяет не загрузилась ли страница для логина
	 * @return true если загрузилась
	 */
	public static boolean isSimulator(){
		return newUserLbl.isPresent();
	}

	//Поля данных о зарегестрированном пользователе
	private final TextBox regloginTxb = new TextBox(By.id("reg_login"), "Логин");
	private final ComboBox regloginCmb = new ComboBox(By.xpath("//select[@id='reg_login']"), "Логин");
	private final TextBox regpasswordTxb = new TextBox(By.id("reg_password"), "Пароль");

	//Кнопки формы
	private final Button join = new Button(By.xpath("//input[@value='Войти']"), "Войти");

	/** Нажимает на кнопку "Войти"
	 */
	public final void clickJoinBtn(){
		join.clickViaJS();
		browser.waitForPageToLoad();
	}
	/** Производит вход в личный кабинет.
	 *  Цикл, потому что входит со второго раза - всегда.
	 * @param login логин
	 * @param password пароль
	 */
	public void login(String login, String password){
		int n = 0;
		while(n != 2){
			if (regloginCmb.isPresent()) {
				regloginCmb.selectByValue(login);
			} else {
				regloginTxb.type(login);
				regpasswordTxb.type(password);
			}
			clickJoinBtn();
			if(!regloginCmb.isPresent() && !regloginTxb.isPresent()){
				return;
			}
			n++;
		}
	}
}
